package com.lottery.material.dao.article;

import com.lottery.material.pojo.article.ArticleInfo;
import com.lottery.material.pojo.page.Page;
import com.lottery.material.pojo.page.PageData;
import com.lottery.material.pojocustom.article.ArticleInfoCustom;
import com.lottery.material.vo.portal.article.ArticleDeletedVo;
import com.lottery.material.vo.portal.article.ArticleInfoListVo;
import com.lottery.material.vo.portal.user.CollectArticleUserVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @description 文章信息Mapper
 * @author rambo
 * @date 2019年4月11日 下午9:22:07
 */
@SuppressWarnings("JavaDoc")
public interface ArticleInfoMapper {
	
    Integer deleteByPrimaryKey(Integer id);

    Integer insert(ArticleInfo record);

    Integer insertSelective(ArticleInfo record);

    ArticleInfo selectByPrimaryKey(Integer id);

    Integer updateByPrimaryKeySelective(ArticleInfo record);

    Integer updateByPrimaryKey(ArticleInfo record);

    /**
     * description：查询扩展类分页列表
     * user 朱正磊
     * time 2019-04-17 17:01
     * @param page 分页对象
     * @return 返回扩展类分页列表数据
     */
    List<ArticleInfoCustom> findCustomListPage(Page page);

    /**
     * description：根据主键查询唯一扩展类数据
     * user 朱正磊
     * time 2019-04-17 17:03
     * @param id 主键
     * @return 返回唯一扩展类数据
     */
    ArticleInfoCustom findCustomById(Integer id);

    /**
     * @Author: houjie
     * @Description: 根据用户userId及圈子id查询当天的帖子
     * @Date: 2019/4/9 16:58
     */
    List<ArticleInfo> findTheDayByUserIdAndCircleId(PageData pd);

    /**
     * 查询个人文章列表
     * @Author jy
     * @param map
     * @return
     */
    List<Map<String,Object>> findByUserIdAndPage(@Param("params") Map<String,Object> map);

    /**
     * 查询个人删除的文章
     * @Author jy
     * @param map
     * @return
     */
    List<ArticleDeletedVo> findDeletedArticleByUserId(@Param("params") Map<String,Object> map);

    /**
     * 查询已购文章列表
     * @param map
     * @return
     */
    List<Map<String, Object>> findPurchasedArticleByUserIdAndPage(@Param("params")Map<String, Object> map);

    /**
     * 查询收藏的文章
     * @Author 焦阳
     * @param paramMap
     * @return
     */
    List<CollectArticleUserVo> findCollectArticleByUserIdAndPage(Map<String, Object> paramMap);

    /**
     * description: 根据文章id查询
     * author sunny
     * createDate 2019-04-16 下午 5:35
     * @param articleId
     * @return
     */
    ArticleInfo findByArticleId(String articleId);

    /**
     * description: 根据用户userId及圈子id查询累计发帖量
     * author sunny
     * createDate 2019-04-16 下午 8:14
     * @param userId
     * @param circleId
     * @return
     */
    Integer findCountByUserIdAndCircleId(@Param("userId") String userId, @Param("circleId") String circleId);

    /**
     * description: 查询当前比赛下的文章
     * author sunny
     * createDate 2019-04-23 上午 11:29
     * @param paramMap
     * @return
     */
    List<ArticleInfoListVo> findCompetitionArticle(Map<String, Object> paramMap);

    /**
     * description: 查询当前圈子下的文章
     * author sunny
     * createDate 2019-04-23 下午 2:51
     * @param paramMap
     * @return
     */
    List<ArticleInfoListVo> findCircleArticle(Map<String, Object> paramMap);

    /**
     * description: 根据文章id查询部分详情信息
     * author sunny
     * createDate 2019-04-23 下午 5:55
     * @param articleId
     * @return
     */
    ArticleInfoCustom findArticleDetailByArticleId(String articleId);

    /**
     * description: 修改文章中所含赛事为结束状态
     * author sunny
     * createDate 2019-04-19 下午 3:46
     * @param articleId
     * @return
     */
    Integer updateIsCompetitionEndForTrue(String articleId);

    /**
     * description: 修改文章中推广相关信息
     * author sunny
     * createDate 2019-04-20 下午 12:15
     * @param paramMap
     * @return
     */
    Integer updateArticlePromotion(Map<String, Object> paramMap);

    /**
     * @Author 肖拔赟
     * @Description 获取用户一小时内最新发布文章
     * @Date Created on 2019-04-25 10:00
     * @param
     * @return
     */
    Map<String, Object> getWithinAnHourArticleForUser(String userId);


    /**
     * @Author 肖拔赟
     * @Description 获取用户当天内发布文章总数
     * @Date Created on 2019-04-25 10:00
     * @param
     * @return
     */
   Integer getWithinTodayArticleForUser(String userId);

    /**
     * description: 更新文章点赞量
     * author sunny
     * createDate 2019-04-25 下午 2:12
     * @param articleId
     * @param isLike
     * @return
     */
    Integer updateLikeTotalByArticleId(@Param("articleId") String articleId, @Param("isLike") String isLike);

    /**
     * description: 更新文章阅读量
     * author sunny
     * createDate 2019-04-25 下午 2:13
     * @param articleId
     * @return
     */
    Integer updateReadTotalByArticleId(String articleId);

    /**
     * description: 更新文章评论量
     * author sunny
     * createDate 2019-04-25 下午 2:18
     * @param articleId
     * @param isComment
     * @return
     */
    Integer updateCommentTotalByArticleId(@Param("articleId") String articleId, @Param("isComment") String isComment);

    /**
     * description: 根据文章id更新文章信息
     * author sunny
     * createDate 2019-04-26 下午 4:41
     * @param articleInfo
     * @return
     */
    Integer updateByArticleId(ArticleInfo articleInfo);

    /**
     * description: 删除文章（逻辑删除）
     * author sunny
     * createDate 2019-04-29 下午 5:57
     * @param articleId
     * @return
     */
    Integer deleteByArticleId(String articleId);

    /**
     * description: 根据圈子Id查询文章置顶总数
     * author sunny
     * createDate 2019-04-30 上午 10:09
     * @param circleId
     * @return
     */
    Integer findTopCountByCircleId(Integer circleId);
}
